1. Field of the Invention
This invention relates to the field of graphics processing. More particularly, this invention relates to tile-based graphics processing and provision of a per-pixel general purpose data store for intermediate values within such tile-based graphics processing.
2. Description of the Prior Art
It is known to provide graphics processing apparatus that operates in accordance with tile-based processing techniques. In tile-based processing techniques an image frame to be processed is divided into a plurality of tiles of adjacent pixel locations. The graphics primitive data specifying graphics objects to be drawn is then subject to a binning operation by which it is identified for each tile which of the graphic primitives will have an effect upon the output values to be generated for that tile. Typically, only a subset of the graphics primitives for a total image frame will impact an individual tile.
When the tiles have been identified and the graphic primitives binned, processing circuitry can fetch from the memory the data it needs to conduct a desired graphics processing operation for the tile concerned. Each primitive is associated with a fragment shader, which is a sequence of programmable instructions. For example there are some instructions to load from special images (called textures) and support for basic arithmetic and sin/cos functions, support for branching and loops etc. The user supplies the fragment shader for each primitive. The fragment shader is typically executed once per each pixel that a primitive overlaps. For example, using basic instructions the user can assemble a program that computes per-pixel lighting. From the GPU's perspective, it is executing arbitrary instructions. When the output values for that tile have been generated using all the graphics primitives identified in the binning step as having an influence upon that tile, then the output values may be written back to the main memory. Tile-based processing is particularly advantageous when used in energy constrained environments as it involves fewer data accesses to main memory thereby reducing energy consumption.
It is known to provide graphics processing operations which are performed using non tile-based graphics processing systems which generate intermediate values that are subsequently used one or more times to build up final pixel colour values. Examples of these graphics processing techniques are deferred shading and drawing order independent transparent objects. Known ways of implementing these processes perform one or more passes over graphics primitives to gather intermediate data in respect of each pixel within the image frame. This intermediate data can then be used multiple times to generate the final pixel colour values. A problem with this approach is that large volumes of intermediate values may be generated and require storage. Another problem is that such methods when applied to a tile-based processing system do not exploit the tile-based processing and increase the number of times the intermediate values need to be either stored to or read from the main memory.